]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
screenshot-ui: Show a notification on capture
authorIvan Molodetskikh <yalterz@gmail.com>
Thu, 26 Aug 2021 08:33:00 +0000 (11:33 +0300)
committerMarge Bot <marge-bot@gnome.org>
Thu, 27 Jan 2022 22:25:42 +0000 (22:25 +0000)
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1954>

js/ui/screenshot.js

index 8b3c0656b07a65255e844484fb867bf37138eab8..41a4dfe16ef0d4d53b18495890adf4f94ed68010 100644 (file)
@@ -7,6 +7,7 @@ const GrabHelper = imports.ui.grabHelper;
 const Layout = imports.ui.layout;
 const Lightbox = imports.ui.lightbox;
 const Main = imports.ui.main;
+const MessageTray = imports.ui.messageTray;
 const Workspace = imports.ui.workspace;
 
 Gio._promisify(Shell.Screenshot.prototype, 'pick_color', 'pick_color_finish');
@@ -1584,6 +1585,49 @@ class ScreenshotUI extends St.Widget {
                     throw e;
             }
         }
+
+        // Show a notification.
+        const source = new MessageTray.Source(
+            // Translators: notification source name.
+            _('Screenshot'),
+            'applets-screenshooter'
+        );
+        const notification = new MessageTray.Notification(
+            source,
+            // Translators: notification title.
+            _('Screenshot captured'),
+            // Translators: notification body when a screenshot was captured.
+            _('You can paste the image from the clipboard.'),
+            {
+                datetime: time,
+                gicon: Gio.BytesIcon.new(bytes),
+            }
+        );
+        // Translators: button on the screenshot notification.
+        notification.addAction(_('Show in Files'), () => {
+            const app =
+                Gio.app_info_get_default_for_type('inode/directory', false);
+
+            if (app === null) {
+                // It may be null e.g. in a toolbox without nautilus.
+                log('Error showing in files: no default app set for inode/directory');
+                return;
+            }
+
+            app.launch([file], global.create_app_launch_context(0, -1));
+        });
+        notification.connect('activated', () => {
+            try {
+                Gio.app_info_launch_default_for_uri(
+                    file.get_uri(), global.create_app_launch_context(0, -1));
+            } catch (err) {
+                logError(err, 'Error opening screenshot');
+            }
+        });
+        notification.setTransient(true);
+
+        Main.messageTray.add(source);
+        source.showNotification(notification);
     }
 
     _saveScreenshot() {